<!DOCTYPE html>
<html>
	<head>
	<title>豆瓣影评分析</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="assets/css/amazeui.min.css">
	<script src="assets/js/amazeui.min.js" rel="stylesheet"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"></script>
	<style type="text/css">
    @media only screen and (min-width: 1200px) {
      .blog-g-fixed {
        max-width: 1200px;
      }
    }

    @media only screen and (min-width: 641px) {
      .blog-sidebar {
        font-size: 1.4rem;
      }
    }

    .blog-main {
      padding: 20px 0;
    }

    .blog-title {
      margin: 10px 0 20px 0;
    }

    .blog-meta {
      font-size: 14px;
      margin: 10px 0 20px 0;
      color: #222;
    }

    .blog-meta a {
      color: #27ae60;
    }

    .blog-pagination a {
      font-size: 1.4rem;
    }

    .blog-team li {
      padding: 4px;
    }

    .blog-team img {
      margin-bottom: 0;
    }

    .blog-content img,
    .blog-team img {
      max-width: 100%;
      height: auto;
    }

    .blog-footer {
      padding: 10px 0;
      text-align: center;
    }
	</style>
	</head>
	<body>
		<header class="am-topbar">
			<h1 class="am-topbar-brand">
   			<a href="#">Hank</a>
            </h1>
            <div class="am-collapse am-topbar-collapse" id="doc-topbar-collapse">
    		<ul class="am-nav am-nav-pills am-topbar-nav">
      		<li class="am-active"><a href="#">首页</a></li>
      		<li><a href="#">Git</a></li>
    		</ul>  
    		<div class="am-topbar-right" style="margin-top:13px"><a href="#">基于Spark的豆瓣影评分析</a></div>
			
    		</div>
		</header>
		<div class="am-g am-g-fixed blog-g-fixed">
			<div class="am-u-md-10">
				<article style="padding:20px 0">
					    <h3 class="am-article-title blog-title">
        					<a href="#">所有评论中的中文词汇</a>
        					<h4 class="am-article-meta blog-meta">by <a href="">Douban</a> 2017/3/30 <a href="#">Top250</a></h4>
      					</h3>
      		<div class="am-g blog-content">
        		
            <div class="am-u-md-10" style="font-weight:bold">
              <p>豆瓣电影可以算是国内最权威的电影信息网站，里面的电影信息、电影评论信息量非常大。</p>
              <p>当我空闲下来，想要找一部合胃口的电影来看，我通常先在豆瓣上选择一些评分较高的电影，再看看它的评论，综合来决定用哪一部来消磨我的惬意时光。</p>
              <p>肉眼的局限性在于你通常只能浏览小规模的电影信息，那么如果将所有豆瓣的电影信息汇总下来，会得到什么有意思的结果呢。</p>
            </div>
            <div class="am-u-md-7">
              <p>用Python爬下豆瓣Top250所有电影的评论，得到csv如下:</p>
            </div>
            <p style="margin-left:15px"><img src="total.png" style="width:80%"></p>
            <div class="am-u-md-6">
              <p>简单地将所有影评进行中文分词，再利用Spark进行单词频率统计，可以得到这样的词云图。</p>
              <p>看到虽然过滤了一部分停用词，但是还是有许多无意义词汇出现，比如「一个」「这个」「就是」，它们出现的频率很高。</p>
              <p>对于一些主观上感觉更重要的词汇，比如「人生」，「爱情」，「希望」，反而被无意义的词淹没。</p>
            </div>
        		<div class="am-u-md-5" style="margin-right:50px">
          			<p><img src="./ciyun.png" style="border-radius:10px " height="300" width="250"></p>
        		</div>
      		</div>
      		<div class="am-g blog-content">
        		<div class="am-u-md-7">
          		<p>柱状图和Radar图展现了所有词汇中出现频率最高的几个单词</p>
        		</div>
      		</div>
          <div class="am-g am-u-md-12">
              <canvas id="canvas1" height="250" width="300" style="margin-left:50px"></canvas>  
              <canvas id="canvas2" height="250" width="300" style="margin-left:100px"></canvas>  
                <script type="text/javascript">  
                  var ctx = new Chart(document.getElementById("canvas1").getContext("2d"));  
                  var options = {scaleFontSize: 13, scaleFontColor: "#F7464A"};  
                  // 线型图  
                  var data = {
                          labels : ["电影","一个","就是","喜欢","没有","自己","这个"],
                          datasets : [
                          {
                          fillColor : "#69D2E7",
                          strokeColor : "#69D2E7",
                          data : [103,55,46,44,43,43,38]
                          },
                        ]
                      }
                var myBarChart = ctx.Bar(data, options);  
                var ctx = new Chart(document.getElementById("canvas2").getContext("2d"));  
                var data = {
                          labels : ["电影","一个","就是","喜欢","没有","自己","这个"],
                          datasets : [
                                    {
                                    fillColor : "#F38630",
                                    strokeColor : "rgba(220,220,220,1)",
                                    pointColor : "rgba(220,220,220,1)",
                                    pointStrokeColor : "#fff",
                                    data : [65,59,90,81,56,55,40]
                                  },
                        ]
                      }
              var myBarChart = ctx.Radar(data, options);  
              </script>            
          </div>
        <div class="am-u-md-10">
          <p>后来我发现用到的汉语分词工具「结巴分词」，有词性标注的功能，标注句子分词后每个词的词性，比如「爱」的词性标注是v,而「北京」「天安门」的标注是r，那么可不可以利用词性标注将一部分无意义词汇过滤掉？</p>
          <p>我决定过滤出所有词性是v的动词，过滤之后，我发现Spark统计出的词汇频率有所改变:</p>
        </div>
        <div class="am-g blog-content">
              <canvas id="canvas3" height="250" width="300" style="margin-left:50px"></canvas>  
              <canvas id="canvas4" height="250" width="300" style="margin-left:100px"></canvas>  
                <script type="text/javascript">  
                  var ctx = new Chart(document.getElementById("canvas3").getContext("2d"));  
                  var options = {scaleFontSize: 13, scaleFontColor: "#F7464A"};  
                  // 线型图  
                  var data = {
                          labels : ["喜欢","没有","感动","知道","看到","不会","看过"],
                          datasets : [
                          {
                          fillColor : "#69D2E7",
                          strokeColor : "#69D2E7",
                          data : [34,29,19,16,16,13,12]
                          },
                        ]
                      }
                var myBarChart = ctx.Bar(data, options);  
                var ctx = new Chart(document.getElementById("canvas4").getContext("2d"));  
                var data = {
                          labels : ["喜欢","没有","感动","知道","看到","不会","看过"],
                          datasets : [
                                    {
                                    fillColor : "#F38630",
                                    strokeColor : "rgba(220,220,220,1)",
                                    pointColor : "rgba(220,220,220,1)",
                                    pointStrokeColor : "#fff",
                                    data : [34,29,19,16,16,13,12]
                                  },
                        ]
                      }
              var myBarChart = ctx.Radar(data, options);  
              </script>            
          </div>
          <div class="am-u-md-10">
            <p>好的，看到了更多能表现出主观情感的词汇，比如「喜欢」「感动」，但是同样也有无意义词汇出现，结巴分词中的词性标注只能表明一个词汇是动词，或是名词。而分析不到词汇中的情感倾向，这需要进一步去实现。</p>
          </div>
				</article>
        <div class="am-u-md-10">
        <article style="padding:20px 0">
              <h3 class="am-article-title blog-title">
                  <p><a href="#">豆瓣TOP250电影中哪个国家的电影最多？</a></p>
                  <h4 class="am-article-meta blog-meta">by <a href="">Douban</a> 2017/3/30 <a href="#">Top250</a></h4>
                </h3>
          <div class="am-g blog-content">
              <div class="am-u-md-10"><p>豆瓣电影中，每个电影都有标注发行的国家，作为评分最高榜的TOP250,那么在最受欢迎的250个电影中，制作国家的数量有什么特点呢？</p></div>
          </div>
          <p>我提取了所有250个电影的产出国家，同样用Spark词频统计后得到下面的图表</p>

        </div>
        <div class="am-g">
              <canvas id="canvas5" height="250" width="300" style="margin-left:50px"></canvas>  
              <canvas id="canvas6" height="250" width="300" style="margin-left:100px"></canvas>  
                <script type="text/javascript">  
                  var ctx = new Chart(document.getElementById("canvas5").getContext("2d"));  
                  var options = {scaleFontSize: 13, scaleFontColor: "#F7464A"};  
                  // 线型图  
                  var data = {
                          labels : ["美国","香港","日本","英国","法国","德国","中国"],
                          datasets : [
                          {
                          fillColor : "#69D2E7",
                          strokeColor : "#69D2E7",
                          data : [101,26,23,23,21,14,11]
                          },
                        ]
                      }
                var myBarChart = ctx.Bar(data, options);  
                var ctx = new Chart(document.getElementById("canvas6").getContext("2d"));  
                var data = {
                          labels : ["美国","香港","日本","英国","法国","德国","中国"],
                          datasets : [
                                    {
                                    fillColor : "#F38630",
                                    strokeColor : "rgba(220,220,220,1)",
                                    pointColor : "rgba(220,220,220,1)",
                                    pointStrokeColor : "#fff",
                                    data : [101,26,23,23,21,14,11]
                                  },
                        ]
                      }
              var myBarChart = ctx.Radar(data, options);  
              </script>            
          </div>
        <p>恩，拥有好莱坞的美国呈现压倒性优势，在TOP250电影中，有101个是美国出产的。</p>
        <p>而国产电影，只有11个位于TOP250中，这还要考虑到豆瓣影评是中国影评网站。</p>
        <p>可见，国产电影好片率不高，下面是上榜的国产电影：</p>
        <table class="am-table am-table-bordered am-table-radius am-table-striped">
        <tr>
          <td>1.霸王别姬</td>
          <td>2.大话西游之大圣娶亲</td>
          <td>3.大话西游之月光宝盒</td>
        </tr>
        <tr>
          <td>4.鬼子来了</td>
          <td>5.活着</td>
          <td>6.阳光灿烂的日子</td>
        </tr>
        <tr>
          <td>7.让子弹飞</td>
          <td>8.可可西里</td>
          <td>9.哪吒闹海</td>
        </tr>
        <tr>
          <td>10.新龙门客栈</td>
          <td>11.疯狂的石头</td>
          <td></td>
        </tr>
        </table>
        <p>恩，正如评论所说，陈凯歌可以靠「霸王别姬」吃两辈子饭了。</p>
        </article>
			</div>
		</div>
    <div style="height:20px"><p></p></div>
    <hr data-am-widget="divider" style="" class="am-divider am-divider-default" />
    <footer class="blog-footer" >
      <p>黄珂<br/>
      <small>huangkenc@126.com</small>
    </p>
</footer>
	</body>
</html>